import math

print("{1} {2} {3} {0}".format(1, 2, 4, 3))  # 2 4 3 1
print("{name} {age} {1} {0}".format(1, 2, name="ddy", age=28))  # ddy 28 2 1

print("num is {num:b}".format(num=100))  # num is 1100100
print("num is {num:f}".format(num=100))  # num is 100.000000

print("num\'s percent is {num:%}".format(num=0.93))  # num's percent is 93.000000%

'''
b 将整数表示为二进制数
c 将整数解读为Unicode码点 
d 将整数视为十进制数进行处理，这是整数默认使用的说明符 
e 使用科学表示法来表示小数(用e来表示指数) 
E 与e相同，但使用E来表示指数
f 将小数表示为定点数
F 与f相同，但对于特殊值(nan和inf)，使用大写表示
g 自动在定点表示法和科学表示法之间做出选择。这是默认用于小数的说明符，但在默认情况下至少有1位小数 
G 与g相同，但使用大写来表示指数和特殊值
n 与g相同，但插入随区域而异的数字分隔符
o 将整数表示为八进制数
s 保持字符串的格式不变，这是默认用于字符串的说明符
x 将整数表示为十六进制数并使用小写字母
X 与x相同，但使用大写字母 
% 将数表示为百分比值(乘以100，按说明符f设置格式，再在后面加上%)  
'''

'''
数字对齐
num format:   0
num format:  13
num format: 123
'''
print("num format: {num:3}".format(num=0))
print("num format: {num:3}".format(num=13))
print("num format: {num:3}".format(num=123))

'''
字符对齐
format: ddy        is me
format: zhangsan   is a girl
format: lisi       is a boy
'''
print("format: {name:10} is me".format(name="ddy"))
print("format: {name:10} is a girl".format(name="zhangsan"))
print("format: {name:10} is a boy".format(name="lisi"))

print("float value: {v:.3f}".format(v=100))  # float value: 100.000
print("pi \'s value: {v:10.6f}.".format(v=math.pi))  # pi 's value:   3.141593
print("one million is {:,}".format(10 ** 6))  # one million is 1,000,000

width = int(input('Please enter width: '))
price_width = 10
item_width = width - price_width
header_fmt = '{{:{}}}{{:>{}}}'.format(item_width, price_width)
fmt = '{{:{}}}{{:>{}.2f}}'.format(item_width, price_width)
'''
format 中两个{{ 表示转义{，同%%表示%
'''
print("{{}}fmt is :{}".format(header_fmt))
print('=' * width)
print(header_fmt.format('Item', 'Price'))
print('-' * width)
print(fmt.format('Apples', 0.4))
print(fmt.format('Pears', 0.5))
print(fmt.format('Cantaloupes', 1.92))
print(fmt.format('Dried Apricots (16 oz.)', 8))
print(fmt.format('Prunes (4 lbs.)', 12))
print('=' * width)
'''
要指定左对齐、右对齐和居中，可分别使用<、>和^
============================================================
Item                                                   Price
------------------------------------------------------------
Apples                                                  0.40
Pears                                                   0.50
Cantaloupes                                             1.92
Dried Apricots (16 oz.)                                 8.00
Prunes (4 lbs.)                                        12.00
============================================================
'''

print('{0:<10.2f}\n{0:^10.2f}\n{0:>10.2f}'.format(math.pi))
'''
3.14      
   3.14   
      3.14
'''
print('{0:<010.2f}\n{0:^010.2f}\n{0:>010.2f}'.format(math.pi))
'''
3.14000000
0003.14000
0000003.14
'''


def power(x):
    return x ** 2


x = 16
''' F-strings format 的运行速度很快 '''
print(f'{x} ** 2 = {power(x)}')
